package com.asia5b.a5mall.middleware.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import androidx.viewpager.widget.ViewPager;

/**
 * Created by zhangyuncai on 2020/6/30.
 * 只能向左滑动
 */

public class LeftScrollViewPager extends ViewPager {
    private boolean isScroll;
    //上一次x坐标
    private float downX;

    public LeftScrollViewPager(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public LeftScrollViewPager(Context context) {
        super(context);
    }

    /**
     * 1.dispatchTouchEvent一般情况不做处理
     * ,如果修改了默认的返回值,子孩子都无法收到事件
     */
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);   // return true;不行
    }

    /**
     * 是否拦截
     * 拦截:会走到自己的onTouchEvent方法里面来
     * 不拦截:事件传递给子孩子
     */
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN://记录下点坐标
                downX = ev.getX();
                break;
            case MotionEvent.ACTION_MOVE:
                float moveX = ev.getX() - downX;
                if (moveX > 0) {
                    // TODO: 2019/5/17   向右滑 不处理,有需要自己可以去做其他逻辑

                } else {
                    return false;
                    //向左滑 处理，判断 下一个数组是否为true，是则可以滑动，否则不可滑动
                }
//                downX = ev.getX();//不断记录新的坐标

                break;

        }
        // return false;//可行,不拦截事件,
        // return true;//不行,孩子无法处理事件
        //return super.onInterceptTouchEvent(ev);//不行,会有细微移动
        return super.onInterceptTouchEvent(ev);
    }

    /**
     * 是否消费事件
     * 消费:事件就结束
     * 不消费:往父控件传
     */
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN://记录下点坐标
                downX = ev.getX();
                break;
            case MotionEvent.ACTION_MOVE:
                float moveX = ev.getX() - downX;
                if (moveX > 0) {
                    // TODO: 2019/5/17   向右滑 不处理,有需要自己可以去做其他逻辑

                } else {
                    return true;
                    //向左滑 处理，判断 下一个数组是否为true，是则可以滑动，否则不可滑动
                }
//                downX = ev.getX();//不断记录新的坐标

                break;

        }
        //return false;// 可行,不消费,传给父控件
        //return true;// 可行,消费,拦截事件
        //super.onTouchEvent(ev); //不行,
        //虽然onInterceptTouchEvent中拦截了,
        //但是如果viewpage里面子控件不是viewgroup,还是会调用这个方法.
        return super.onTouchEvent(ev);
    }

    public void setScroll(boolean scroll) {
        isScroll = scroll;
    }
}

